// 常用验证工具

/**
 * 验证手机号
 * @param value 手机号
 * @returns 是否为有效手机号
 */
export const isPhone = (value: string): boolean => {
  return /^1[3-9]\d{9}$/.test(value);
};

/**
 * 验证邮箱
 * @param value 邮箱
 * @returns 是否为有效邮箱
 */
export const isEmail = (value: string): boolean => {
  return /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/.test(value);
};

/**
 * 验证身份证号
 * @param value 身份证号
 * @returns 是否为有效身份证号
 */
export const isIdCard = (value: string): boolean => {
  return /^[1-9]\d{5}(19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dX]$/.test(value);
};

/**
 * 验证URL
 * @param value URL
 * @returns 是否为有效URL
 */
export const isUrl = (value: string): boolean => {
  return /^(https?:\/\/)?([\da-z.-]+)\.([a-z.]{2,6})([/\w .-]*)*\/?$/.test(value);
};

/**
 * 验证密码强度
 * @param value 密码
 * @returns 密码强度等级（0-3）
 */
export const checkPasswordStrength = (value: string): number => {
  let strength = 0;
  if (value.length >= 8) strength++;
  if (/[a-z]/.test(value) && /[A-Z]/.test(value)) strength++;
  if (/\d/.test(value)) strength++;
  if (/[!@#$%^&*]/.test(value)) strength++;
  return strength;
};
